<?php
/**
 * IndexController
 * 
 * @author
 * @version 
 */
require_once 'Zend/Controller/Action.php';
class IndexController extends Thaind_Controller_Action
{
	var $_arrParam;
    public function init()
    {

//    	Truyá»�n tham sá»‘ ra view

    	$this->_arrParam = $this->_request->getParams();
    	$this->view->arrParam = $this->_arrParam;
    }

    public function preDispatch(){
    }
    
    public function indexAction(){
    }
    public function loginAction(){
    	
//    	Kiểm tra đăng nhập

    	$auth = Thaind_Auth_User::getInstance();
    	if ($auth->hasIdentity()){
    		$this->_redirect("/");
    	}
    	
//    	Load các model sử dụng trong action

    	Zend_Loader::loadClass("Default_Models_UserModel");
    	
//    	Config để kiểm tra đăng nhập facebook

		$config = array(
			'appId'					=> FACEBOOK_APP_ID,
			'secret'				=> FACEBOOK_APP_SECRET,
			'fileUpload'			=> false, // optional
			'allowSignedRequest'	=> false, // optional, but should be set to false for non-canvas apps
		);
		
//		Khai báo biến

    	$facebook = new Thaind_Facebook_Facebook($config);
		$user_model = new Default_Models_UserModel();
    	
//		Kiểm tra đăng nhập qua facebook

//		Nếu có tham số code thì kiểm tra token và lấy thông tin user
//		Nếu không có tham số code thì redirect sang facebook để kiểm tra đăng nhập

    	if (isset($this->_arrParam['code'])){
    		
//    		Lấy token từ facebook và lưu lại

    		$token = $facebook->getAccessToken();
    		$facebook->setAccessToken($token);
    		
//    		Lấy thông tin user từ facebook

	    	$user_profile = $facebook->api('/me');
	    	$auth = Thaind_Auth_User::getInstance();
	    	
//	    	Kiểm tra user đã tồn tại chưa. Nếu chưa thì lưu vào db

    		$social_id_validator = new Zend_Validate_Db_NoRecordExists(
			    array(
			        'table'   => 'user',
			        'field'   => 'social_id'
			    )
			);
    		$validator = new Zend_Validate_Db_NoRecordExists(
			    array(
			        'table'   => 'user',
			        'field'   => 'username'
			    )
			);
			if ($social_id_validator->isValid("facebook_" . $user_profile["id"])){
				if ($validator->isValid($user_profile["username"])){
					$user_model->insert(array('username'	=> $user_profile["username"],
											'sunnet_email'	=> $user_profile['email'],
											'name'			=> $user_profile['name'],
											'address'		=> $user_profile['hometown']['name'],
											'social_id'		=> "facebook_" . $user_profile["id"],
					));
				}else{
					$user_model = new Default_Models_UserModel();
					$user_model->insert(array(
											'sunnet_email'	=> $user_profile['email'],
											'name'			=> $user_profile['name'],
											'address'		=> $user_profile['hometown']['name'],
											'social_id'		=> "facebook_" . $user_profile["id"],
					));
				}
			}
			$where = $user_model->getAdapter()->quoteInto("social_id = ?", "facebook_" . $user_profile['id']);
			$user_info =(object) $user_model->fetchRow($where)->toArray();
			$user_info->token = $token;
	    	$auth->getStorage()->write($user_info);
			$this->_redirect("/");
    	}else{
	    	
	    	$params = array(
				'scope' => 'read_stream,friends_likes',
				'redirect_uri' => HOMEPAGE . '/index/login'
			);
			$this->_redirect($facebook->getLoginUrl($params));
    	}
    }
    public function logoutAction(){
    	$auth = Thaind_Auth_User::getInstance();
		$auth->clearIdentity();
		$this->_redirect('/');
    }
}
